home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / dev / cross / GBDK-2.0.lha / GBDK / lib / macros.ms < prev    next >
Text File  |  1998-10-01  |  1KB  |  107 lines

  1. addf    MACRO    to,add
  2.     pushf    to
  3.     fetchf    add
  4.     call    .fadd32
  5.     storef    to
  6.     ENDM
  7.  
  8. subf    MACRO    to,sub
  9.     pushf    sub
  10.     fetchf    to
  11.     call    .fsub32
  12.     storef    to
  13.     ENDM
  14.  
  15. ; Add 16 bit constant const to BC
  16. add16    MACRO    const
  17.     ld    a,c
  18.     add    #<const
  19.     ld    c,a
  20.     ld    a,b
  21.     adc    #>const
  22.     ld    b,a
  23.     ENDM
  24.     
  25. ; Fetch BC from addr
  26. load16    MACRO    addr
  27.     ld    a,(addr+0)
  28.     ld    c,a
  29.     ld    a,(addr+1)
  30.     ld    b,a
  31.     ENDM
  32.  
  33. ; Store BC in addr
  34. store16    MACRO    addr
  35.     ld    a,b
  36.     ld    (addr+1),a
  37.     ld    a,c
  38.     ld    (addr+0),a
  39.     ENDM
  40.  
  41. ; Fetch fp number from addr, preserving BC
  42. fetchf    MACRO    addr
  43.     ld    hl,#addr
  44.     ld    a,(hl+)        ; 8
  45.     ld    e,a        ; 4 = 12
  46.     ld    a,(hl+)
  47.     ld    d,a
  48.     ld    a,(hl+)
  49.     ld    h,(hl)
  50.     ld    l,a
  51.     ENDM
  52.  
  53. ; Store FP number HLDE in addr without destroying HLDE
  54. storef    MACRO    addr
  55.     ld    a,h        ; 4
  56.     ld    (addr+3),a    ; 16
  57.     ld    a,l
  58.     ld    (addr+2),a
  59.     ld    a,d
  60.     ld    (addr+1),a
  61.     ld    a,e
  62.     ld    (addr+0),a
  63.     ENDM
  64.  
  65. ; Fetch fp number from offset+bc without destroying BC
  66. fetchfi    MACRO    offset
  67.     ld    hl,#offset
  68.     add    hl,bc
  69.     ld    a,(hl+)
  70.     ld    e,a
  71.     ld    a,(hl+)
  72.     ld    d,a
  73.     ld    a,(hl+)
  74.     ld    h,(hl)
  75.     ld    l,a
  76.     ENDM
  77.  
  78. ; Store fp number into (BC), destroying BC but preserving HLDE
  79. storefi    MACRO
  80.     ld    a,e
  81.     ld    (bc),a        ; 8 cycles
  82.     inc    bc        ; 8 cycles
  83.     ld    a,d        ; 4 cycles
  84.     ld    (bc),a
  85.     inc    bc
  86.     ld    a,l
  87.     ld    (bc),a
  88.     inc    bc
  89.     ld    a,h
  90.     ld    (bc),a        ; Total = 20*4 = 80
  91.     ENDM
  92.  
  93. ; Push fp number at addr, destroying BC
  94. pushf    MACRO    addr
  95.     ld    a,(addr+3)
  96.     ld    b,a
  97.     ld    a,(addr+2)
  98.     ld    c,a
  99.     push    bc
  100.     ld    a,(addr+1)
  101.     ld    b,a
  102.     ld    a,(addr+0)
  103.     ld    c,a
  104.     push    bc
  105.     ENDM
  106.     
  107.